Over the past several decades electronic devices such as computers, mobile computing devices (e.g., smart phones), smart televisions, etc. have increasingly become integrated into modern society. In a typical use case, a user may interact with an electronic device using an input device such as a touch screen, computer mouse, keyboard, buttons etc. Although such input devices are useful, their functionality and/or form factor may make them unsuitable or not-optimal for use with certain devices. For example, many smart phone companies have eschewed the use of hardware buttons on smart phones, in part because the use of such buttons may impose meaningful design constraints in that context.
With the foregoing in mind interest has grown in the development of other technologies for interacting with electronic devices. In particular, interest has grown in the use of gestures to control one or more functions of an electronic device. In this regard several gesture recognition technologies have been developed to enable an electronic device to recognize one or more gestures made by a user of the device, and to perform commands associated with the recognized gesture.
In some gesture recognition technologies a two-dimensional image is segmented so as to isolate a portion of the image containing a gesture from the background. In some instances segmentation is performed using color-based techniques (e.g., by identifying certain skin tones) and/or by depth-based techniques (e.g., using a time of flight camera or a stereo camera). Once the portion image containing the gesture is isolated from the background, a classifier is then applied to classify the gesture (e.g., the hand pose in the image) from a set of classes. In some instances, such classification is performed using a support vector machine, a neural network, and/or region/shape-based analysis techniques.
Although existing gesture recognition technologies have shown some promise, various problems can limit their practical usefulness in real world applications. For example, segmentation of the two-dimensional image may not always be successful due to the difficulty in computing a reliable skin model and/or because depth data is not available. Isolation of the portion of the image containing the gesture from the background can also be unreliable in instances where the background contains significant motion, and/or in instances where a body part making a gesture overlaps another body part having similar color characteristics (e.g., when a hand overlaps a face of a user). As a result, such systems may fail to detect a gesture made by a user, produce unreliable results, and/or present a less than optimal end user experience. Such systems may also consume relatively large amounts of electrical power, potentially rendering them unsuitable for low power applications.